#include<bits/stdc++.h>
using namespace std;
const int N=205;

int n,a,b;

int edges[N][N];
int dis[N][N];
int num;

int main(){
	scanf("%d%d%d",&n,&a,&b);
	for(int s=1;s<=n;s++){
		for(int t=1;t<=n;t++){
			dis[s][t]=edges[s][t]=1000;
		}
	}
	int t;
	for(int i=1;i<=n;i++){
		dis[i][i]=0;
		scanf("%d",&num);
		t=i+num;
		if(t>0&&t<=n){
			edges[i][t]=1;
			dis[i][t]=1;
		}
		t=i-num;
		if(t>0&&t<=n){
			edges[i][t]=1;
			dis[i][t]=1;
		}
	}
	//Floyd
	for(int k=1;k<=n;k++){
		for(int s=1;s<=n;s++){
			for(int t=1;t<=n;t++){
				if(dis[s][k]+dis[k][t]<dis[s][t]){
					dis[s][t]=dis[s][k]+dis[k][t];
				}
			}
		}
	}
	if(dis[a][b]>n) printf("-1");
	else printf("%d",dis[a][b]);
	
	return 0;
}
